var $ = layui.jquery;
$(() => {
	
	// 移动模式下隐藏查询面板
	if ($(".query-panel").length > 0) {
		layui.use('common', function () {
			var common = layui.common;
		    if (common.isModile()) {
		    	$(".query-panel").hide();
		    } else {
		    	$(".query-panel").show();
		    }
		});
	}
	
    /*
     * laydate 时间控件绑定
	 * 控件要有"select-time"这个class，ID必须为"startTime"和"endTime"。如果有另一对起止时间控件，则必须重写配置。
	 * 如：
	 * <input id="startTime" class="layui-input select-time" type="text" name="query.startDate" placeholder="开始日期" autocomplete="off">
	 * <input id="endTime"   class="layui-input select-time" type="text" name="query.endDate"   placeholder="结束日期" autocomplete="off">
	 */
    if ($(".select-time").length > 0) {
		var startLayDate;
		var endLayDate;
        layui.use('laydate', function() {
            var laydate = layui.laydate;
            startLayDate = laydate.render({
                elem: '#startTime',
                max: $('#endTime').val(),
                theme: 'molv',
                type: $('#startTime').attr("data-type") || 'date',
                trigger: 'click',
                done: function(value, date) {
                    // 结束时间大于开始时间
                    if (value !== '') {
                        endLayDate.config.min.year = date.year;
                        endLayDate.config.min.month = date.month - 1;
                        endLayDate.config.min.date = date.date;
                    } else {
                        endLayDate.config.min.year = '';
                        endLayDate.config.min.month = '';
                        endLayDate.config.min.date = '';
                    }
                    $('#endTime').trigger('click');
                }
            });
            endLayDate = laydate.render({
                elem: '#endTime',
                min: $('#startTime').val(),
                theme: 'molv',
                type: $('#endTime').attr("data-type") || 'date',
                trigger: 'click',
                done: function(value, date) {
                    // 开始时间小于结束时间
                    if (value !== '') {
                        startLayDate.config.max.year = date.year;
                        startLayDate.config.max.month = date.month - 1;
                        startLayDate.config.max.date = date.date;
                    } else {
                        startLayDate.config.max.year = '2099';
                        startLayDate.config.max.month = '12';
                        startLayDate.config.max.date = '31';
                    }
                }
            });
        });
    }

});

/*
 * 查询功能函数
 */
var queryFn = {
	/*
	 * 查询面板相关方法
	 */
	panel: {
		 // 显示、隐藏面板，cls为面板的class值
		toggle: (cls = "query-panel") => {
		    if ($("." + cls).css("display") == "none"){
		        $("." + cls).show("fast");
		    } else {
		        $("." + cls).hide("fast");
		    }
		},
		// 执行查询，func为回调
		search: (func) => {
			// 执行回调
			if (func !== undefined || func !== null) func();
		},
		// 重置查询条件，func为回调方法，filter为查询表单的lay-filter属性值
		reset: (func, filter = "query-form") => {
			// 调用表单的重置方法
			$('[lay-filter="' + filter + '"]')[0].reset();
			// 执行回调
			if (func !== undefined || func !== null) func();
		}
	}
};

var treeFn = {
	selectChecked: (id, data, checkedIds) => {
		var hasId = (ids, id) => {
	    	for (var i = 0; i < ids.length; i++) {
	    		if (ids[i] == id) {
	    			return true;
	    		}
	    	}
	    	
	    	return false;
		};
				
		layui.use('tree', () => {
			var tree = layui.tree;
			if (checkedIds.length == 0) return;
	    	for (var i = 0; i < data.length; i++){
		    	if (data[i].children && data[i].children.length > 0){
		    		treeFn.selectChecked(id, data[i].children, checkedIds); // 支节点则递归所有子项
		    	} else if (hasId(checkedIds, data[i].id)) {
		        	tree.setChecked(id, data[i].id); // 叶子节点才选择
		    	}
	    	}
		});
	}
	, getCheckedIds : (id) => {
		var getCheckedChildren = (data, checkedTreeIds) => {
	        for(var i = 0; i < data.length; i++){
	            checkedTreeIds.push(data[i].id);
	            if (data[i].children && data[i].children.length > 0) {
	            	getCheckedChildren(data[i].children, checkedTreeIds);
	            }
	        }
		};
		
		var checkedTreeIds = [];
		layui.use('tree', () => {
			var tree = layui.tree;
		
			getCheckedChildren(tree.getChecked(id), checkedTreeIds);
		});
    	return checkedTreeIds;
	}
}
/*
var windowInfo = {
	width: window.innerWidth,
	hight: window.innerHeight
};

const getWindowInfo = () => {
	console.log(windowInfo);
};

1.定义上一次时间，判断执行的时间和上一次时间的时间间隔
2.满足条件，执行回调函数
function throttle(callback,wait){
    let pre = 0;
    // 返回值是一个函数
    return function(event){
        // 节流函数/真正的事件回调函数
        const current = Date.now(); //当前时间
        // 事件触发后，节流函数也会被返回，只是满足一定的条件再调用
        if (current - pre > wait) { //只有离上一次调用callback的时间差大于wait
        //callback()是window调用的，所以callback函数里的this是window,这里要修改指向事件源
        callback.call(this,event); 
        // 记录此次调用的时间
        pre = current;
        }
    }
}

window.addEventListener('resize', throttle(getWindowInfo, 200));
*/